package com.lazily.set_;


import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

/**
 * @Author:  GZQ
 * @date:  2025/4/29 22:16
 * @description: Set 接口和常用的方法
 * @version: 1.0
 */

@SuppressWarnings({"all"})
public class SetMethod {
	// 程序入口
	public static void main(String[] args) {
		// 解读
		// 1. 以Set 接口的实现类 HashSet 来演示 Set 接口的方法
		// 2. Set 接口的实现类的对象(Set接口对象), 不能存放重复的元素, 可以添加一个null
		// 3. set 接口对象存放的数据是无序(即添加的顺序和取出的顺序不一致)
		// 4. 注意：取出的顺序，虽然不是添加的顺序, 但是他是固定的。
		Set set = new HashSet();
		set.add("john");
		set.add("jane");
		set.add("john"); // 重复
		set.add("tom");
		set.add("jack");
		set.add("mary");
		set.add(null);
		set.add(null); // 再次添加null

		for(int i = 0; i < 10; i++) {
			System.out.println("set: " + set);
		}

		// 遍历
		// 方式1：使用迭代器
		System.out.println("=====迭代器遍历=====");
		Iterator iterator = set.iterator();
		while(iterator.hasNext()) {
			Object obj = iterator.next();
			System.out.println("obj: " + obj);
		}

		set.remove(null);

		// 方式2：增强for
		System.out.println("======增强for======");
		for (Object o : set) {
			System.out.println("o: " + o);
		}

		//set 接口对象，不能通过索引来获取

	}
}
